// utils/api-debugger.js
// API调试工具

/**
 * API调试工具
 */
export const apiDebugger = {
  /**
   * 调试API调用
   * @param {string} apiName - API名称
   * @param {Object} params - 请求参数
   * @param {Object} response - 响应数据
   */
  debugApiCall(apiName, params, response) {
    console.log(`=== ${apiName} API调试信息 ===`)
    console.log('请求参数:', params)
    console.log('响应数据:', response)
    
    if (response && response.code) {
      console.log('响应状态码:', response.code)
      console.log('响应消息:', response.msg)
      console.log('响应数据:', response.data)
    }
    
    console.log('=== 调试结束 ===')
  },

  /**
   * 检查API响应格式
   * @param {Object} response - 响应数据
   * @returns {Object} 检查结果
   */
  checkResponseFormat(response) {
    const result = {
      isValid: false,
      issues: [],
      suggestions: []
    }
    
    if (!response) {
      result.issues.push('响应数据为空')
      return result
    }
    
    // 检查是否有code字段
    if (typeof response.code === 'undefined') {
      result.issues.push('缺少code字段')
      result.suggestions.push('后端应返回包含code字段的响应')
    }
    
    // 检查是否有data字段
    if (typeof response.data === 'undefined') {
      result.issues.push('缺少data字段')
      result.suggestions.push('后端应返回包含data字段的响应')
    }
    
    // 检查data是否为数组（地址列表）
    if (response.data && !Array.isArray(response.data)) {
      result.issues.push('data字段不是数组格式')
      result.suggestions.push('地址列表接口应返回数组格式的data')
    }
    
    // 检查数组中的对象结构
    if (response.data && Array.isArray(response.data) && response.data.length > 0) {
      const sampleItem = response.data[0]
      const requiredFields = ['id', 'receiver_name', 'receiver_phone', 'province', 'city', 'district', 'street']
      
      requiredFields.forEach(field => {
        if (!(field in sampleItem)) {
          result.issues.push(`缺少必需字段: ${field}`)
        }
      })
    }
    
    result.isValid = result.issues.length === 0
    return result
  },

  /**
   * 打印完整的调试信息
   * @param {string} apiName - API名称
   * @param {Object} params - 请求参数
   * @param {Object} response - 响应数据
   */
  printFullDebug(apiName, params, response) {
    console.log(`🔍 ${apiName} 完整调试信息`)
    console.log('📤 请求参数:', JSON.stringify(params, null, 2))
    console.log('📥 原始响应:', JSON.stringify(response, null, 2))
    
    const formatCheck = this.checkResponseFormat(response)
    console.log('✅ 格式检查结果:', formatCheck)
    
    if (response && response.data && Array.isArray(response.data)) {
      console.log('📊 数据统计:')
      console.log(`   - 总数: ${response.data.length}`)
      console.log(`   - 第一条数据:`, response.data[0])
      
      if (response.data.length > 0) {
        const fields = Object.keys(response.data[0])
        console.log(`   - 字段列表: ${fields.join(', ')}`)
      }
    }
    
    console.log('🔍 调试完成\n')
  }
}

export default apiDebugger 